package models

type Serial struct {
	ID                  int64                 `gorm:"not null;column:ID;PRIMARY_KEY"`
	ComName             string                `gorm:"not null;column:ComName"` //串口名称
	ComName2            *string               `gorm:"-" `                      //串口类型之后的对应名称
	Describe            *string               `gorm:"column:Describe"`
	BAD                 string                `gorm:"not null;column:BAD"`                         //波特率
	DAB                 string                `gorm:"not null;column:DAB"`                         //数据位
	CHC                 string                `gorm:"not null;column:CHC"`                         // N - None, E - Even, O - Odd
	STO                 string                `gorm:"not null;column:STO"`                         //停止位
	Agreement           string                `gorm:"not null;column:Agreement"`                   //协议 1.MODBUS RTU  2.DLT645 RTU 3：西门子S7 TCP 4：MODUBS TCP 5:CJ188 RTU
	ByteMode            string                `gorm:"not null;column:ByteMode"`                    //字节流方式 暂无用
	TPITV               string                `gorm:"not null;column:TPITV"`                       //采集周期（秒)
	Timeout             int64                 `gorm:"column:Timeout;"`                             //采集超时时间(秒)
	SBTimeout           int64                 `gorm:"column:SBTimeout;default:0;"`                 //每条指令间隔(秒) 0秒默认原本的200ms
	RetryCount          int                   `gorm:"column:RetryCount;"`                          //重试次数
	Rack                *int                  `gorm:"column:Rack;"`                                //西门子配置
	Slot                *int                  `gorm:"column:Slot;"`                                //西门子配置
	IsErrorBreak        int                   `gorm:"not null;column:IsErrorBreak;default:2;"`     //失败跳过当前设备剩下的点位采集 1:开启  2：关闭 默认关闭
	ErrorMoveToFront    int                   `gorm:"not null;column:ErrorMoveToFront;default:2;"` //采集失败把采集参数提前并直接开始下一次采集 1:开启  2：关闭 默认关闭
	Serial_Slave        []Serial_Slave        `gorm:"foreignKey:Serial_ID;references:ID;constraint:OnDelete:CASCADE"`
	Serial_Slave_Detail []Serial_Slave_Detail `gorm:"foreignKey:Serial_ID;references:ID;constraint:OnDelete:CASCADE"`
	DeviceInfo_Detail   []DeviceInfo_Detail   `gorm:"foreignKey:Serial_ID;references:ID;constraint:OnDelete:CASCADE"`
}

// 配置数据库操作的表名称
func (Serial) TableName() string {
	return "Serial"
}

type EditSerialRequest struct {
	Serial Serial `json:"serial"`
}

// 功能码下的采集点名称
type CollectNameList struct {
	CollectName            string
	Serial_Slave_Detail_ID int64
}

// 下拉框选择
type OutputData struct {
	Title string `json:"title"`
	// ID              int64         `json:"id"`
	ID              string        `json:"id"`
	Type            string        `json:"type"`
	Serial_ID       int64         `json:"serialID"`
	Serial_Slave_ID int64         `json:"serialSlaveID"`
	Children        []*OutputData `json:"children"`
}

// type ChildLevel struct {
// 	Title    *string      `json:"title"`
// 	ID       int64        `json:"id"`
// 	Children []ChildLevel `json:"children"`
// }
